#ifndef MESSAGE_H
#define MESSAGE_H

#include <vector>
#include <string>

using namespace std;

class Joueur;

enum TypeMessage {
    SON_FINI,
    MUSIQUE_FINIE,

    PIECE_CLIQUEE,
    PIECE_DEPLACEE,
    CREER_PARTIE,
    ABANDON_PARTIE,
    REFUSER_JOUEUR,
    DEMANDE_INVITATION,
    CREER_PARTIE_RESEAU,
    CHERCHER_PARTIES_RESEAU,
    ACCEPTER_PARTIE,
    SAUVEGARDER_PARTIE,
    CHARGER_PARTIE,

    LISTE_PARTIES_OUVERTES,
    INVITATION,
    PARTIE_ACCEPTEE,
    PARTIE_REFUSEE,
    PARTIE_ABANDONNEE,
    PARTIE_FINIE,
    DEPLACEMENT_PIECE,

    ECHIQUIER_MODIFIE,
    FIN_PARTIE,
    ECHEC,
    MAUVAIS_COUP,
    JOUER_SON,
    JOUER_MUSIQUE,

    // messages ajoutés (??!!!)
    SAISIE_PIECE,
    CHOIX_PROMOTION
};

class Message {
    private:
        TypeMessage type;
        vector<int> listeEntiers;
        vector<string> listeChaines;
        vector<Joueur *> listeJoueurs;
    public:
        Message(TypeMessage type);

        TypeMessage getType();
        int getEntier(int n);
        string getChaine(int n);
        Joueur * getJoueur(int n);

        int getNbEntiers();
        int getNbChaines();
        int getNbJoueurs();

        void ajouterEntier(int valeur);
        void ajouterChaine(string valeur);
        void ajouterJoueur(Joueur * valeur);
};

#endif // MESSAGE_H
